package com.schoolvisitors.dto;

import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

@Data
public class AdminDto {
    private Long id;

    // 角色ID
    @NotNull(message = "角色ID不能为空")
    private Long roleId;

    // 用户名：字母开头，可以包含字母和数字，6-16位
    @NotNull(message = "用户名不能为空")
    @Pattern(regexp = "^[A-Za-z][A-Za-z0-9]{5,15}$", message = "用户名必须是字母开头，且长度为6-16个字符，允许包含字母和数字")
    private String username;

    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{1,6}$", message = "姓名只能包含1到6个汉字")
    @Size(min = 2, max = 6, message = "姓名长度必须在0和6之间")
    @NotNull(message = "姓名不能为空")
    private String realName;

    // 密码：包含大小写字母、数字和符号，8-16位
    @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,16}$", message = "密码必须包含大小写字母、数字和符号，且长度为8-16位")
    private String password;

    @NotNull(message = "审核人状态不能为空")
    private Boolean reviewer;
}
